import time

from appium import webdriver
from appium.options.android import UiAutomator2Options  # 👈 新增导入
from selenium.webdriver.ie.webdriver import WebDriver
from selenium.webdriver.support.wait import WebDriverWait
from appium.webdriver.common.appiumby import AppiumBy

# 创建 Options 对象（替代 desired_caps 字典）
# 创建UiAutomator2Options对象，用于配置Android设备的测试选项
options = UiAutomator2Options()
# 设置平台名称为Android
options.platform_name = 'Android'
# 设置Android平台版本为9
options.platform_version = '7'
# 设置设备名称为emulator-5554（这是Android模拟器的默认标识）
options.device_name = 'emulator-5554'
# 设置要测试的应用包名为com.android.settings（Android系统设置应用）
options.app_package = 'com.android.settings'
# 设置要测试的应用启动活动为.Settings（系统设置的主活动）
options.app_activity = '.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', options=options)





# 根据一个相同特征获取多个元素的文本内容
# tittle=driver.find_elements(AppiumBy.ID,'android:id/title')
# print(tittle)
# print(len(tittle))
# for i in tittle:
#     print(i.text)


# 显式等待
# print("点击之前")
# wait=WebDriverWait(driver,5)
# lamb=wait.until(lambda x:x.find_element(AppiumBy.XPATH,"//*[contains(@content-desc,'收起')]"))
# lamb.click()
# 化简
# WebDriverWait(driver, 5, 1).until(
#     lambda x: x.find_element(AppiumBy.XPATH, "//*[contains(@content-desc,'收起')]")).click()
# print("点击之后")

# 隐式等待设置，等待元素加载的最长时间为200秒
# driver.implicitly_wait(200)
# print("点击之前")
# driver.find_element(AppiumBy.XPATH,"//*[contains(@content-desc,'收起')]").click()
# print("点击之后")


# # 导入AppiumBy类，用于定位元素
# from appium.webdriver.common.appiumby import AppiumBy
# # 使用XPath定位策略查找所有文本内容包含"设"的元素
# # find_elements方法返回一个元素列表
# xPath=driver.find_elements(AppiumBy.XPATH,"//*[contains(@text,'设')]")
# # 打印找到的元素数量
# print(len(xPath))
# # 遍历所有找到的元素
# for i in xPath:
#     # 打印每个元素的文本内容
#     print(i.text)


# 根据同一个元素特征定位多个元素，com.android.settings:id/dashboard_tile
# tittle=driver.find_elements(AppiumBy.ID,'android:id/title')
# print(tittle)
# print(len(tittle))
# for i in tittle:
#     print(i.text)


# 获取一个元素特征
# time.sleep(2)
# driver.find_element(AppiumBy.ID,'com.android.settings:id/search').click()
# time.sleep(2)
# driver.find_element(AppiumBy.XPATH,"//*[@resource-id='android:id/search_src_text']").send_keys('hello')
# time.sleep(2)
# driver.find_element(AppiumBy.CLASS_NAME, 'android.widget.ImageButton').click()


# print("准备进入后台")
# driver.background_app(5)
# print("回到前台")


# driver.execute_script(
#     "mobile: installMultipleApks", {
#     "apks": ['C:\\1.apk']
# })
# time.sleep(3)
# #卸载应用
# driver.remove_app("com.bqgmfxs.xyxs")
# driver.is_app_installed()
# time.sleep(3)


# driver.close()
# print(driver.current_package)


# 暂停3秒，等待应用加载完成
# time.sleep(3)
# # 打印当前应用的包名
# print(driver.current_package)
# # 打印当前应用的Activity名称
# print(driver.current_activity)
# # 使用execute_script方法执行移动设备上的启动Activity命令
# # 通过intent参数指定要启动的应用组件
# driver.execute_script(
#     "mobile: startActivity",
#     {
#         "intent": "com.android.browser/.BrowserActivity"
#     }
# )
# # 再次暂停3秒，等待新应用加载完成
# time.sleep(3)
# # 打印启动新应用后的包名
# print(driver.current_package)
# # 打印启动新应用后的Activity名称
# print(driver.current_activity)
# # 退出驱动，关闭应用会话
# driver.quit()


# time.sleep(3)
# driver.quit()
